4.4k Star,360公司内部广泛应用的软件——Atlas
整理 | 叶子
一、软件介绍
Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。
主要功能:
* 读写分离
* 从库负载均衡
* IP过滤
* SQL语句黑白名单
* 自动分表
Atlas包括以下组件:
采用Hbase存储元数据
采用Solr实现索引
Ingest/Export 采集导出组件 Type System类型系统 Graph Engine图形引擎 共同构成Atlas的核心机制
所有功能通过API向用户提供,也可以通过Kafka消息系统进行集成
Atlas支持各种源获取元数据:Hive,Sqoop,Storm。。。
还有优秀的UI支持
二、项目地址
https://github.com/Qihoo360/Atlas
三、下载安装
安装之前 先要准备好:
JDK1.8
Zookeeper
Kafka
Hbase
Solr
在启动Atlas时会配置这些环境变量的地址,所以一定要确保以上组件正常运行。
由于在编译时可以选择内部集成,所以这些Atlas是可以自带的,但是JDK一定要安装好。
在安装Altas中,需要Solr 预先创建好collection
<code ,="" consolas,="" monaco,="" menlo,="" monospace;border-radius:="" 0px;font-size:="" 12px;padding:="" 15px;background-color:="" rgb(240,="" 240,="" 240);overflow-x:="" scroll;"="" style="box-sizing: inherit; font-family: "Operator Mono"; font-size: 13px; margin: 0px; padding: 0px; border: none; border-radius: 0px; background: rgb(246, 246, 246); color: rgb(51, 51, 51); overflow: visible; word-break: normal; display: -webkit-box; line-height: 1.5;">bin/solrcreate-cvertex_index-shards3-replicationFactor2bin/solrcreate-cedge_index-shards3-replicationFactor2
bin/solrcreate-cfulltext_index-shards3-replicationFactor2
在solr中验证创建成功。
2.安装Atlas到编译好的包的路径下 apache-atlas-sources-2.1.0/distro/target
将生成好的安装包 apache-atlas-2.1.0-server.tar.gz 拷贝到目标路径下。
解压:
tar-zxvfapache-atlas-2.1.0-server.tar.gz
3.修改配置进入conf目录下:
export JAVA_HOME=/opt/jdk1.8.0_191/
export MANAGE_LOCAL_HBASE=true
export MANAGE_LOCAL_SOLR=true
如果使用内嵌,那么配置结束,直接去 启动Atlas
但是大部分时候,需要使用已经有的组件进行集成,所以设置为false。
vimatlas-application.properties
这里就是设置Hbase Solr等配置
bin/atlas_start.py
启动成功后访问:
http://slave01:21000
admin/admin登录
四、Q & A
Q: 是否支持多字符集?
A: 这是我们对原版MySQL-Proxy的第一项改进,符合国情是必须的
Q: 自动读写分离挺好,但有时候我写完马上就想读,万一主从同步延迟怎么办?
A: SQL语句前增加 /*master*/ 就可以将读请求强制发往主库
Q: 主库宕机,读操作受影响么?
A: 在atlas中是不会的! 能问这样的问题, 说明你用过官方的mysql-proxy, 很遗憾官方版本并未解决这个问题
Q: 检测后端DB状态会阻塞正常请求么?
A: 不会, atlas中检测线程是异步进行检测的,即使有db宕机,也不会阻塞主流程。在atlas中没有什么异常会让主流程阻塞! 同上,官方版本也会让你失望
Q: 想下线一台DB, 又不想停掉mysql server, 怎么办?
A: 可以通过管理接口手动上下线后端db, atlas会优先考虑管理员的意愿
Q: 想给集群中增加一台DB, 不想影响线上正常访问可以吗?
A: 通过管理接口可以轻松实现
Q: 相比官方mysql-proxy, atlas还有哪些改进?
A: 这实在是个难以回答的问题,性能,稳定性,可靠性,易维护性,我们做过几十项的改进,下面会尽量列一些较大的改动
五、名字来源
https://my.oschina.net/u/4187920/blog/4872080
https://my.oschina.net/u/4299953/blog/4880992
往期推荐
2021-01-07
2021-01-07
2021-01-06
扫码关注最新动态
公众号ID:fosslab